<?php namespace app\admin\controller;

use houdunwang\request\Request;
use houdunwang\view\View;
use system\model\Category as CategoryModel;

/***
 *  栏目分类管理控制器
 * Class Category
 * @package app\admin\controller
 */
class Category extends Common
{
    public function __construct()
    {
        //触发控制器中间件运行登录判断
        $this->auth();
    }
    //栏目首页
    public function index(CategoryModel $category)
    {
        //调用栏目分类模型
        $cateData = $category->getAllCate();
        //p(['cateData'=>$cateData]);
//        p(compact('cateData'));
        //显示模板
        return view('', compact('cateData'));

    }

    /**
     *  栏目添加与修改操作
     * @param CategoryModel $category
     * @return mixed
     */
    public function post(CategoryModel $category)
    {
        //接收栏目管理表的自增id判断（修改，或者，新增），在进数据库之前转为int整形
        $cate_id = Request::get('cate_id', 0, 'intval');
        if (IS_POST) {
            if ($cate_id) {
                //(1)编辑
                $category = CategoryModel::find($cate_id);
            }
            //(2)数据添加操作
            $category->save(Request::post());
            message('操作成功', 'index');
        }

        /*** 处理旧数据  */
        if ($cate_id) {
            //(1)编辑功能
            //1. find 获取数据分类表的数据
            $oldData = CategoryModel::find($cate_id);
            //p($oldData->toArray());
            //p($cateData);
            //3. 分配旧数据
            View::with('oldData', $oldData);
            //2. 所属分类数据，不能选择自己+自己所有子集
            $cateData = $category->getSonCateData($cate_id);

        } else {
            //(2)栏目添加
            //1.页面处理栏目管理数据
            $cateData = $category->getAllCate();
//            p($cateData);die;
        }
        /**  分配变量   */
        View::with('cateData', $cateData);
        return View();
    }

    /**
     * 删除操作
     */
    public function del(CategoryModel $category)
    {
        //1.获取get参数cate_id
        $cate_id = Request::get('cate_id');
        p($cate_id);
        //2. 执行删除 方法写在模型中
        if ($category->del($cate_id)) {
            //2.(1)执行成功  跳转页面  提示信息
            return $this->setRedirect('index')->success('操作成功');
        } else {
            //2.(2)执行失败
            return $this->error($category->getError());
        }
    }
}
